#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Copyright (C) 2010 rambla.be
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

""" Shows basic usage of the RAMS 'concurrent' resource. """

import time
import rawsc
import rawsc.service
from rawsc import rams
import rawsc.rams.service
try:
  from xml.etree import cElementTree as ElementTree
except ImportError:
  try:
    import cElementTree as ElementTree
  except ImportError:
    from elementtree import ElementTree

USER = "xxx"
PWD = "xxx"
SERVER = "rams.mon01.rambla.be"

try:
    # Create a Rass instance, passing it your login credentials and the base service uri
    client = rawsc.rams.service.RamsService(username=USER, password=PWD, server=SERVER)
    
    # get host entries, page by page, results with most volume first
    qry = rawsc.Query()
    qry["from"] = "2010-10-3-21-00"
    qry["until"] = "2010-10-3-22-00"
    qry["paginate_by"] = "25"
    qry["order"] = "asc"
    feed = client.getConcurrentFeed(query = qry)
    ctr = 1
    while (feed):
        print "Retrieved page %s of geo entries:" % str(ctr)
        for e in feed.entry:
            print "\nEntry URI: " + e.id.text
            print "traffic type = %s" % e.type
            print "datetime: " + str(e.content.params.datetime.text)
            print "hits: " + str(e.content.params.hits.text)
            print "timestamp: " + str(e.content.params.timestamp.text)
        next_link = rawsc.get_next_link(feed)
        if not next_link:
            break
        print "URI for next page: " + next_link
        feed = client.getConcurrentFeed(full_uri = next_link)
        ctr = ctr + 1
        
except rawsc.service.Error, e:
    print "Error Response from server, contents = %s.\n" % str(e)
    error_dict = e[0] # error dict inside the first tuple elem
    print "status code : " + str(error_dict["status"]) + "\n"
    if error_dict.has_key("body"):
        print "error body : " + error_dict["body"] + "\n"
except rawsc.RawscException, e:
    print "RawscException caught, reason = %s.\n" % str(e)
except StandardError, e:
    print "StandardError caught, reason = %s.\n" % str(e)
except:
    print "unhandled exception caught\n"
